package cc.liyinghao.springsecuritydemo.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * 白名单接口
 */
@RestController
@RequiredArgsConstructor
@Tag(name = "基于身份接口")
public class HelloController {

    @Operation(summary = "白名单接口")
    @GetMapping("/hello")
    public String hello() {
        return "这是白名单接口，无需登录，无需账号状态，所有人都可以访问";
    }

    @Operation(summary = "需要登录接口")
    @GetMapping("hello_Login")
    public String helloLogin() {
        return "这是登录后才能访问的接口,不需要任何角色或权限";
    }

    @Operation(summary = "需要用户角色接口")
    @GetMapping("hello_User")
    @PreAuthorize("hasRole('user')")
    public String helloUser() {
        return "这是需要用户角色才能访问的接口";
    }

    @GetMapping("/hello_admin")
    @PreAuthorize("hasRole('admin')")
    @Operation(summary = "管理员角色接口")
    public String admin() {
        return "这是管理员接口，你是管理员，可以访问";
    }
}
